package crons

import "github.com/robfig/cron/v3"

/**
 * 覆写 cron, 对原有的方法进行一部分的功能扩展
 */
type Cron struct {
	*cron.Cron
}

/**
 * 覆写增加 func 回调的接口
 */
func (c *Cron) AddFunc(spec string, cmd func(), immediately ...bool) (cron.EntryID, error) {
	if len(immediately) > 0 && immediately[0] {
		cmd()
	}
	return c.Cron.AddFunc(spec, cmd)
}

/**
 * 覆写增加 job 任务的接口
 */
func (c *Cron) AddJob(spec string, cmd cron.Job, immediately ...bool) (cron.EntryID, error) {
	if len(immediately) > 0 && immediately[0] {
		cmd.Run()
	}
	return c.Cron.AddJob(spec, cmd)
}

/**
 * 实例化任务
 */
func New(opts ...cron.Option) *Cron {
	return &Cron{
		Cron: cron.New(opts...),
	}
}
